﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EggsGame
{
    /// <summary>
    /// 你上班的公司做了一套相当成功的模拟蛋仔的游戏：SimEggs。
    /// 游戏中会出现各种蛋仔，蛋仔的种类及属性如下： 种类：绿头蛋仔、红头蛋仔、橡皮蛋仔、诱饵蛋仔……不确定什么时候上线新类型蛋仔。 
    /// 属性：外观、游泳行为、飞行行为、狮吼行为……也不确定新行为。 
    /// 不同种类的蛋仔所对应的属性如下： 由于不同种类的蛋仔可能具有不同的行为，因此，可以使如何利用多态来实现？ 
    /// 绿头蛋仔：绿头蛋仔的外观、会游泳、会飞行、呱呱叫。 
    /// 红头蛋仔：红头蛋仔的外观、会游泳、会飞行、呱呱叫。 
    /// 橡皮蛋仔：橡皮蛋仔的外观、会游泳（漂浮）、不会飞行、吱吱叫。 
    /// 诱饵蛋仔：诱饵蛋仔的外观、会游泳（漂浮）、不会飞行、不会叫。
    ///【缺陷】增加一种 翻滚的行为，那么有多少个派生的蛋仔类，就得修改多少次代码，这是很不安全
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            // 绿头蛋仔
            Egg greenheadEgg = new GreenHeadEgg();
            greenheadEgg.Display();
            greenheadEgg.Fly();
            greenheadEgg.Swim();
            greenheadEgg.Sound();

            Console.WriteLine();
            // 橡皮蛋仔
            Egg rubberEgg = new RubberEgg();
            rubberEgg.Display();
            rubberEgg.Fly();
            rubberEgg.Swim();
            rubberEgg.Sound();

            Console.WriteLine();
            // 机器蛋仔
            Egg robotEgg = new RobotEgg();
            robotEgg.Display();
            robotEgg.Fly();
            robotEgg.Swim();
            robotEgg.Sound();

            Console.ReadKey();
        }
    }
}
